package com.alameda.api.user;

import com.alameda.commonpent.mp.BaseService;
import com.alameda.user.dto.UserDTO;
import com.alameda.user.pojo.UserDO;
import com.alameda.user.vo.UserVO;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;
import java.util.Map;

/**
 * 用户 业务逻辑层
 *
 * @author Lv
 * @date 2024/2/19
 */
public interface UserService extends BaseService<UserDO> {
    /**
     * 注册账号
     *
     * @param userDTO 用户数据传递对象
     * @return
     */
    Boolean register(UserDTO userDTO);

    /**
     * 登录系统
     *
     * @param userDTO 用户数据传递对象
     * @return
     */
    Map<String, Object> login(UserDTO userDTO);

    /**
     * 获取当前登录用户信息
     *
     * @return
     */
    UserVO getUserInfo();

    /**
     * 修改用户信息
     *
     * @param userDTO 用户数据传递对象
     * @return
     */
    Boolean edit(UserDTO userDTO);

    /**
     * 生成验证码
     *
     * @return
     */
    Map<String, String> getImageCode();

    /**
     * 退出登录
     *
     * @return
     */
    Boolean logout();

    /**
     * 查询用户列表
     *
     * @param userDTO 用户数据传递对象
     * @return
     */
    IPage<UserVO> loadUser(UserDTO userDTO);

    /**
     * 导出excel
     *
     * @param userDTO 用户数据传递对象
     */
    void export(UserDTO userDTO);

    /**
     * 删除组织下的用户
     *
     * @param organizationIdList 组织id集合
     * @return
     */
    Boolean removeByOrganizationIdList(List<Long> organizationIdList);

    /**
     * 通过token读取用户信息
     *
     * @param token 登录令牌
     * @return
     */
    UserDO findByToken(String token);

    /**
     * 处理登录续期
     *
     * @param userDO 用户信息
     * @return
     */
    Boolean dealRenewal(UserDO userDO);
}
